home *** CD-ROM | disk | FTP | other *** search
/ SGI Origin & Onyx2 Patches 1998 May / Origin and Onyx2 System Disk Patches May 1998.img / dist / patchSG0001765.idb / usr / include / dmedia / vl_mgv.h.z / vl_mgv.h
Text File  |  1997-05-19  |  19KB  |  543 lines

  1. /*
  2.  *  dev_mgv.h -- Galileo 1.5 video definitions
  3.  *
  4.  * $Revision: 1.45 $
  5.  */
  6.  
  7. #if !defined(_MGV_DEV_INCLUDE)
  8. #define _MGV_DEV_INCLUDE
  9.  
  10.  
  11. /*==========================================================================*
  12.  * The following constants used by IMPACT Video and may be of interest to   *
  13.  * developers.                                                              *
  14.  *==========================================================================*/
  15. #define MGV_NDPHIVID     35    /* Transfer thread's non-degrading priority */
  16.  
  17.  
  18. /*===========================================================================
  19.  *  Impact Video node number definitions.  Due to the complexity of this    *
  20.  *  device, the node numbers are overloaded.  These constants provide a     *
  21.  *  concise way to signify a particular node.                               *
  22.  ===========================================================================*/
  23.  
  24. /*
  25.  * Video sources and drains 
  26.  */
  27. #define VL_MGV_NODE_NUMBER_VIDEO_1    0 /* Video src/drain 1 (single link) */
  28. #define VL_MGV_NODE_NUMBER_VIDEO_2    1 /* Video src/drain 2 (single link) */
  29. #define VL_MGV_NODE_NUMBER_VIDEO_DL    2 /* Dual linked video src/drain */
  30.  
  31. /*
  32.  * Memory sources and drains
  33.  */
  34. #define VL_MGV_NODE_NUMBER_MEM_VGI_1    0 /* Real-time DMA single link 1 */
  35. #define VL_MGV_NODE_NUMBER_MEM_VGI_2    1 /* Real-time DMA single link 2 */
  36. #define VL_MGV_NODE_NUMBER_MEM_VGI_DL    2 /* Real-time DMA dual link */
  37. #define VL_MGV_NODE_NUMBER_MEM_CC    3 /* CC1 8-bit mem src  (VL_SRC only) */
  38.  
  39. /*
  40.  * Screen sources and drains
  41.  */
  42. #define VL_MGV_NODE_NUMBER_SCREEN_A    0 /* Screen src/drain window A */
  43. #define VL_MGV_NODE_NUMBER_SCREEN_B    1 /* Screen src/drain window B */
  44. #define VL_MGV_NODE_NUMBER_SCREEN_C    2 /* Screen drain window C */
  45.  
  46. /*
  47.  * Texture drain
  48.  */
  49. #define VL_MGV_NODE_NUMBER_TEXTURE    0 /* Gfx texture port (single link) */
  50. #define    VL_MGV_NODE_NUMBER_TEXTURE_DL    1 /* Gfx texture port (dual link) */
  51.  
  52. /*
  53.  * Internal nodes
  54.  */
  55. #define VL_MGV_NODE_NUMBER_FB        0 /* CC1 Internal frame buffer */
  56. #define VL_MGV_NODE_NUMBER_BLENDER    0 /* CC1 Blender */
  57. #define VL_MGV_NODE_NUMBER_CSC        0 /* Colorspace converter */
  58.  
  59.  
  60.  
  61. /*===========================================================================*
  62.  * IMPACT Video specific controls. The values appropriate to each control    *
  63.  * are listed in the following section.                                      *
  64.  *===========================================================================*/
  65.  
  66. #define VL_MGV_CTL_BASE        (('M'<<24)|('G'<<16))
  67.  
  68. /*
  69.  *    Blender Controls
  70.  */
  71. #define VL_MGV_WIPE_TYPE    (VL_MGV_CTL_BASE +  0)
  72. #define VL_MGV_WIPE_DIRECTION   (VL_MGV_CTL_BASE +  1)    /* VL_MGV_WIPE_ANGLE */
  73. #define VL_MGV_WIPE_SHARPNESS   (VL_MGV_CTL_BASE +  2)    /* VL_MGV_WIPE_FUZZ */
  74. #define VL_MGV_WIPE_ANGLE    (VL_MGV_CTL_BASE +  3)
  75. #define VL_MGV_WIPE_POSN    (VL_MGV_CTL_BASE +  4)
  76. #define VL_MGV_WIPE_POSN_PERP    (VL_MGV_CTL_BASE +  5)
  77. #define VL_MGV_WIPE_CENT    (VL_MGV_CTL_BASE +  6)
  78. #define VL_MGV_WIPE_CENT_PERP    (VL_MGV_CTL_BASE +  7)
  79. #define VL_MGV_WIPE_REPT    (VL_MGV_CTL_BASE +  8)
  80. #define VL_MGV_WIPE_REPT_PERP    (VL_MGV_CTL_BASE +  9)
  81. #define VL_MGV_WIPE_SPEED    (VL_MGV_CTL_BASE + 10)
  82. #define VL_MGV_WIPE_FUZZ    (VL_MGV_CTL_BASE + 11)
  83.  
  84.  
  85. /*
  86.  * Device Controls 
  87.  */
  88. #define VL_MGV_AUTOPHASE            (VL_MGV_CTL_BASE + 12)
  89. #define VL_MGV_INPUT_8BIT            (VL_MGV_CTL_BASE + 13)
  90. #define VL_MGV_INPUT_STD            (VL_MGV_CTL_BASE + 14)
  91. #define VL_MGV_INPUT_PRESENT            (VL_MGV_CTL_BASE + 15)
  92. #define VL_MGV_INPUT_ALPHA_LUT_SELECT         (VL_MGV_CTL_BASE + 16)
  93. #define VL_MGV_OUTPUT_ALPHA_LUT_SELECT        (VL_MGV_CTL_BASE + 17)
  94. #define VL_MGV_TRIGGER_WAIT            (VL_MGV_CTL_BASE + 18)
  95. #define VL_MGV_CC1_BLANK_WIDTH_CH1        (VL_MGV_CTL_BASE + 19)
  96. #define VL_MGV_CC1_BLANK_WIDTH_CH2        (VL_MGV_CTL_BASE + 33)
  97. #define VL_MGV_CC1_RELATIVE_OUTPUT_TIMING    (VL_MGV_CTL_BASE + 79)
  98. #define VL_MGV_CC1_INPUT_ROUNDING_CH1         (VL_MGV_CTL_BASE + 124)
  99. #define VL_MGV_CC1_INPUT_ROUNDING_CH2        (VL_MGV_CTL_BASE + 125)
  100. #define VL_MGV_GFX_LOCK_REFRESH            (VL_MGV_CTL_BASE + 131)
  101.  
  102. /*
  103.  * Digital Video Output Controls
  104.  */
  105. #define VL_MGV_OUTPUT_FSYNC        (VL_MGV_CTL_BASE + 20)
  106. #define VL_MGV_OUTPUT_BLANK        (VL_MGV_CTL_BASE + 21)
  107. #define VL_MGV_OUTPUT_HPHASE        (VL_MGV_CTL_BASE + 22)
  108. #define VL_MGV_OUTPUT_CHROMA        (VL_MGV_CTL_BASE + 23)
  109.  
  110. #define VL_MGV_OUTPUT_DL_SELECT_FREEZE    (VL_MGV_CTL_BASE + 24)
  111. #define VL_MGV_OUTPUT_DL_SELECT_FSYNC    (VL_MGV_CTL_BASE + 25)
  112. #define VL_MGV_OUTPUT_DL_SELECT_BLANK    (VL_MGV_CTL_BASE + 26)
  113. #define VL_MGV_OUTPUT_DL_SELECT_CHROMA    (VL_MGV_CTL_BASE + 27)
  114. #define VL_MGV_OUTPUT_ALPHA_HPHASE    (VL_MGV_CTL_BASE + 28)
  115. #define VL_MGV_SLAVE_ALPHA_HPHASE    (VL_MGV_CTL_BASE + 29)
  116.  
  117. #define VL_MGV_TRIGGER_POLARITY        (VL_MGV_CTL_BASE + 34)
  118. #define VL_MGV_TRIGGER_LINE        (VL_MGV_CTL_BASE + 35)
  119. #define VL_MGV_DOMINANCE_FIELD        (VL_MGV_CTL_BASE + 36)
  120. #define VL_MGV_ALPHA_NOT_PIXEL        (VL_MGV_CTL_BASE + 37)
  121.  
  122. /*
  123.  *    Keyer controls.
  124.  */
  125. #define VL_MGV_KEYER_SOURCE        (VL_MGV_CTL_BASE + 38)    /* defunct */
  126. #define VL_MGV_KEYER_MODE        (VL_MGV_CTL_BASE + 39)
  127. #define VL_MGV_KEYER_VALUE_LUMA        (VL_MGV_CTL_BASE + 40)
  128. #define VL_MGV_KEYER_RANGE_LUMA        (VL_MGV_CTL_BASE + 41)
  129. #define VL_MGV_KEYER_FG_OPACITY        (VL_MGV_CTL_BASE + 42)
  130. #define VL_MGV_KEYER_VALUE_CHROMA_U    (VL_MGV_CTL_BASE + 43)
  131. #define VL_MGV_KEYER_RANGE_CHROMA_U    (VL_MGV_CTL_BASE + 44)
  132. #define VL_MGV_KEYER_VALUE_CHROMA_V    (VL_MGV_CTL_BASE + 45)
  133. #define VL_MGV_KEYER_RANGE_CHROMA_V    (VL_MGV_CTL_BASE + 46)
  134. #define VL_MGV_KEYER_DETAIL        (VL_MGV_CTL_BASE + 47)
  135. #define VL_MGV_WIPE            (VL_MGV_CTL_BASE + 48)
  136. #define VL_MGV_WIPE_SYMMETRY        (VL_MGV_CTL_BASE + 49)
  137. #define VL_MGV_WIPE_INVERT        (VL_MGV_CTL_BASE + 50)
  138. #define VL_MGV_WIPE_EXT_TRIG        (VL_MGV_CTL_BASE + 51)
  139.  
  140. /*
  141.  * Blender Flat Background Controls
  142.  *
  143.  * Note: VL_MGV_BLEND_B_FLAT is obsolete; VL_MGV_BLEND_B_SELECT
  144.  * should be used instead.
  145.  */
  146. #define VL_MGV_BLEND_B_FLAT        (VL_MGV_CTL_BASE + 52)
  147. #define VL_MGV_BLEND_B_Y        (VL_MGV_CTL_BASE + 53)
  148. #define VL_MGV_BLEND_B_U        (VL_MGV_CTL_BASE + 54)
  149. #define VL_MGV_BLEND_B_V        (VL_MGV_CTL_BASE + 55)
  150.  
  151. #define VL_MGV_BLEND_H_FILT        (VL_MGV_CTL_BASE + 56)
  152. #define VL_MGV_BLEND_SHADOW_ON        (VL_MGV_CTL_BASE + 57)
  153. #define VL_MGV_BLEND_SHADOW_GAIN    (VL_MGV_CTL_BASE + 58)
  154. #define VL_MGV_BLEND_SHADOW_OFFSET    (VL_MGV_CTL_BASE + 59)
  155. #define VL_MGV_OUTPUT_ALPHA_CHROMA    (VL_MGV_CTL_BASE + 126)
  156.  
  157. /*
  158.  * Screen Controls
  159.  */
  160. #define VL_MGV_DEINTERLACE        (VL_MGV_CTL_BASE + 60)
  161. #define VL_MGV_SHOW_GFX            (VL_MGV_CTL_BASE + 128)
  162.  
  163. /*
  164.  *    Blender MUX controls
  165.  */
  166. #define VL_MGV_BLENDER_FG_PIXEL        (VL_MGV_CTL_BASE + 61)
  167. #define VL_MGV_BLENDER_FG_ALPHA        (VL_MGV_CTL_BASE + 62)
  168. #define VL_MGV_BLENDER_BG_PIXEL        (VL_MGV_CTL_BASE + 63)
  169. #define VL_MGV_BLENDER_BG_ALPHA        (VL_MGV_CTL_BASE + 64)
  170.  
  171. #define VL_MGV_BLEND_A_ALPHA_SELECT    (VL_MGV_CTL_BASE + 30)
  172. #define VL_MGV_BLEND_B_SELECT        (VL_MGV_CTL_BASE + 31)
  173. #define VL_MGV_BLEND_B_ALPHA_SELECT    (VL_MGV_CTL_BASE + 32)
  174.  
  175. #define VL_MGV_BLENDER_XYMIX        (VL_MGV_CTL_BASE + 65)
  176. #define VL_MGV_BLENDER_THRESH        (VL_MGV_CTL_BASE + 66)
  177. #define VL_MGV_BLENDER_VRAND        (VL_MGV_CTL_BASE + 67)
  178. #define VL_MGV_BLENDER_HRAND        (VL_MGV_CTL_BASE + 68)
  179. #define VL_MGV_BLENDER_SLICE_SEL    (VL_MGV_CTL_BASE + 69)
  180. #define VL_MGV_BLENDER_SEL_MODE        (VL_MGV_CTL_BASE + 70)
  181.  
  182.  
  183. /*
  184.  *    VGI1 Memory Node DMA controls 
  185.  */
  186. #define VL_MGV_DMA_VIN_ROUND        (VL_MGV_CTL_BASE + 71)
  187. #define VL_MGV_DMA_VOUT_EXPAND        (VL_MGV_CTL_BASE + 72)
  188. #define VL_MGV_DMA_ROUND_TYPE        (VL_MGV_CTL_BASE + 73)
  189. #define VL_MGV_DMA_RAND_ROUND_MODE    (VL_MGV_CTL_BASE + 74)
  190. #define VL_MGV_DMA_VOUT_BLANK        (VL_MGV_CTL_BASE + 75)
  191. #define VL_MGV_DMA_ERROR_RESTART    (VL_MGV_CTL_BASE + 76)
  192.  
  193. #define VL_MGV_BUFFER_QUANTUM        (VL_MGV_CTL_BASE + 77)
  194. #define VL_MGV_DMA_VOUT_STARVATION    (VL_MGV_CTL_BASE + 78)
  195.  
  196. /*
  197.  *   Color Space Converter Controls
  198.  */
  199. #define VL_MGV_CSC_IN_RANGE        (VL_MGV_CTL_BASE + 80)
  200. #define VL_MGV_CSC_OUT_RANGE        (VL_MGV_CTL_BASE + 81)
  201. #define VL_MGV_CSC_IN_PACKING        (VL_MGV_CTL_BASE + 82)
  202. #define VL_MGV_CSC_OUT_PACKING        (VL_MGV_CTL_BASE + 83)
  203. #define VL_MGV_CSC_CONST_HUE        (VL_MGV_CTL_BASE + 84)
  204. #define VL_MGV_CSC_ALPHA_CORRECTION    (VL_MGV_CTL_BASE + 85)
  205. #define VL_MGV_CSC_COEF            (VL_MGV_CTL_BASE + 86)
  206. #define VL_MGV_CSC_LUT_IN_YG            (VL_MGV_CTL_BASE + 87)
  207. #define VL_MGV_CSC_LUT_IN_UB        (VL_MGV_CTL_BASE + 88)
  208. #define VL_MGV_CSC_LUT_IN_VR        (VL_MGV_CTL_BASE + 89)
  209. #define VL_MGV_CSC_LUT_OUT_YG        (VL_MGV_CTL_BASE + 90)
  210. #define VL_MGV_CSC_LUT_OUT_UB        (VL_MGV_CTL_BASE + 91)
  211. #define VL_MGV_CSC_LUT_OUT_VR        (VL_MGV_CTL_BASE + 92)
  212. #define VL_MGV_CSC_LUT_ALPHA        (VL_MGV_CTL_BASE + 93)
  213. #define VL_MGV_CSC_LUT_IN_PAGE          (VL_MGV_CTL_BASE + 94)
  214. #define VL_MGV_CSC_LUT_ALPHA_PAGE    (VL_MGV_CTL_BASE + 95)
  215.  
  216. /*
  217.  *   Texture Map Interface Controls
  218.  */
  219. #define    VL_MGV_TEXTURE_MIPMAP_MODE    (VL_MGV_CTL_BASE + 119)
  220. #define    VL_MGV_TEXTURE_ROUND_MODE    (VL_MGV_CTL_BASE + 120)
  221. #define    VL_MGV_TEXTURE_INPUT_LINK    (VL_MGV_CTL_BASE + 121)
  222. #define    VL_MGV_TEXTURE_AUTOSWAP        (VL_MGV_CTL_BASE + 122)
  223.  
  224. /*
  225.  *   Aspect Controls
  226.  */
  227. #define    VL_MGV_HASPECT            (VL_MGV_CTL_BASE + 129)
  228. #define    VL_MGV_VASPECT            (VL_MGV_CTL_BASE + 130)
  229.  
  230.  
  231. /*===========================================================================*
  232.  * Control values. The following section lists the values appropriate to the *
  233.  * controls defined above.                                                   *
  234.  *===========================================================================*/
  235.  
  236. /*
  237.  * Genlock (sync) source values.
  238.  *
  239.  * For use with: VL_SYNC_SOURCE
  240.  */
  241. #define GEN_PORT    1    /* Reference input */
  242. #define GEN_DIN2    2    /* Digital in 2 */
  243. #define GEN_DIN1    3    /* Digital in 1 */
  244.  
  245. /*
  246.  * Use these values for Dual Link select controls 
  247.  * 
  248.  * For use with: VL_MGV_OUTPUT_DL_SELECT_*
  249.  */
  250. #define VL_MGV_DL_SELECT_PIXEL    (1 << 0)
  251. #define VL_MGV_DL_SELECT_ALPHA    (1 << 1)
  252. #define VL_MGV_DL_SELECT_ALL    (VL_MGV_DL_SELECT_PIXEL | VL_MGV_DL_SELECT_ALPHA)   /* Default: Pixel+Alpha at the same time. */
  253.  
  254. /*
  255.  *    Keyer modes
  256.  *
  257.  * For use with: VL_MGV_KEYER_MODE
  258.  */
  259. #define VL_MGV_KEYERMODE_NONE        0
  260. #define VL_MGV_KEYERMODE_LUMA        1
  261. #define    VL_MGV_KEYERMODE_CHROMA        2
  262. #define VL_MGV_KEYERMODE_SPATIAL    3
  263.  
  264. /*
  265.  *    Keyer Wipe Types
  266.  *
  267.  * For use with: VL_MGV_WIPE_TYPE
  268.  */
  269. #define VL_MGV_WIPETYPE_NONE    0
  270. #define VL_MGV_WIPETYPE_FADE    1
  271. #define VL_MGV_WIPETYPE_TILE    2
  272. #define VL_MGV_WIPETYPE_SINGLE    3
  273. #define VL_MGV_WIPETYPE_DOUBLE    4
  274. #define VL_MGV_WIPETYPE_CORNER    5
  275.  
  276. /*
  277.  *    Keyer Wipe Directions 
  278.  *
  279.  * For use with: VL_MGV_WIPE_DIRECTION
  280.  */
  281. #define    VL_MGV_WIPEANGLE_NONE    0
  282. #define    VL_MGV_WIPEANGLE_E    1
  283. #define    VL_MGV_WIPEANGLE_NE    2
  284. #define    VL_MGV_WIPEANGLE_N    3
  285. #define    VL_MGV_WIPEANGLE_NW    4
  286. #define    VL_MGV_WIPEANGLE_W    5
  287. #define    VL_MGV_WIPEANGLE_SW    6
  288. #define    VL_MGV_WIPEANGLE_S    7
  289. #define    VL_MGV_WIPEANGLE_SE    8
  290.  
  291. /*
  292.  * Blender input selections
  293.  *
  294.  * For use with VL_MGV_BLEND_A_ALPHA_SELECT, VL_MGV_BLEND_B_SELECT, 
  295.  * VL_MGV_BLEND_B_ALPHA_SELECT
  296.  */
  297. #define VL_MGV_SELECT_BLEND_INPUT 0    /* Input selected by VL_BLEND_A, etc. */
  298. #define VL_MGV_SELECT_FLAT_BG    1    /* Flat background  generator */
  299. #define VL_MGV_SELECT_ALPHA_0    1    /* Use alpha = 0.0 */
  300. #define VL_MGV_SELECT_ALPHA_1    2    /* Use alpha = 1.0 */
  301. #define VL_MGV_SELECT_KEYER    2    /* Use key extractor output as alpha */
  302.  
  303.  
  304. /*
  305.  *  Autophase modes
  306.  * 
  307.  * For use with VL_MGV_AUTOPHASE
  308.  */
  309. #define VL_MGV_AUTOPHASE_NORMAL     0
  310. #define VL_MGV_AUTOPHASE_EXTENDED     1
  311. #define VL_MGV_AUTOPHASE_VARIABLE     2
  312. #define VL_MGV_AUTOPHASE_OFF        3
  313.  
  314. /*
  315.  *  CC1 Input and Output Alpha Lut selections. 
  316.  *
  317.  *  Note: The range conversions shown apply to the input lut; on the output 
  318.  *        lut, the inverse mapping applies.
  319.  *
  320.  * For use with: VL_MGV_INPUT_ALPHA_LUT_SELECT, VL_MGV_OUTPUT_ALPHA_LUT_SELECT 
  321.  */
  322. #define VL_MGV_ALPHA_LUT_PASS             0    /* 2-253 -> 2-253 */
  323. #define VL_MGV_ALPHA_LUT_CCIR601_RANGE        1    /* 17-234 -> 1-254 */
  324. #define VL_MGV_ALPHA_LUT_SUPERBLACK_RANGE    2    /* 2-234 -> 1-254 */
  325. #define VL_MGV_ALPHA_LUT_REDUCED_RANGE        3    /* 33-221 -> 1-254 */
  326.  
  327. /*
  328.  * CC1 output vertical blanking (narrow or normal)
  329.  *
  330.  * For use with: VL_MGV_CC1_BLANK_WIDTH_CH1, VL_MGV_CC1_BLANK_WIDTH_CH2
  331.  */
  332. #define CC1_BLANKING_NORMAL    0
  333. #define CC1_BLANKING_NARROW    1
  334.  
  335. /*
  336.  * CC1 input rounding modes
  337.  *
  338.  * For use with: VL_MGV_CC1_INPUT_ROUNDING_CH1, VL_MGV_CC1_INPUT_ROUNDING_CH2
  339.  */
  340. #define CC1_INPUT_ROUND_DITHER     0
  341. #define CC1_INPUT_ROUND_STATIC    1
  342. /*
  343.  * CC1 relative output timing in pixels (2x pixel clock):
  344.  *
  345.  * For use with VL_MGV_CC1_RELATIVE_OUTPUT_TIMING
  346.  */
  347. #define CC1_OUTPUT_LATE_BY_2    0
  348. #define CC1_OUTPUT_LATE_BY_1    1
  349. #define CC1_OUTPUT_ALIGNED    2
  350. #define CC1_OUTPUT_EARLY_BY_1    3
  351.  
  352. /*
  353.  *  GIO DMA memory drain 10-bit -> 8-bit rounding enable.
  354.  *
  355.  * For use with: VL_MGV_DMA_VIN_ROUND
  356.  */
  357. #define VL_MGV_DMA_RND_OFF    0    /* Disable (10->10) - default */
  358. #define VL_MGV_DMA_RND_ON    1    /* Enable (10->8) */
  359.  
  360. /*
  361.  *  GIO DMA memory drain rounding type.
  362.  *
  363.  * For use with: VL_MGV_DMA_ROUND_TYPE
  364.  */
  365. #define VL_MGV_DMA_RND_SMPLE    0    /* Simple rounding - default */
  366. #define VL_MGV_DMA_RND_RAND    1    /* Radomized rounding */
  367.  
  368. /*
  369.  *  GIO DMA memory source expansion enable.
  370.  *
  371.  * For use with: VL_MGV_DMA_VOUT_EXPAND
  372.  */
  373. #define VL_MGV_DMA_EXPD_OFF    0    /* Disable (10->10) - default */
  374. #define VL_MGV_DMA_EXPD_ON    1    /* Enable (8->10) (2 LSB=0) */
  375.  
  376. /*
  377.  *  GIO DMA memory drain randomized rounding mode.
  378.  *
  379.  * For use with: VL_MGV_DMA_RAND_ROUND_MODE
  380.  */
  381. #define VL_MGV_DMA_RND_RAND_RPT     0    /* Repeat random sequence - default */
  382. #define VL_MGV_DMA_RND_RAND_FREE 1    /* Random sequence free wheels */
  383.  
  384. /*
  385.  *  GIO DMA memory source blanking mode.
  386.  *
  387.  *  NOTE: The default output blanking is set according to VL_PACKING.
  388.  *        This control allows that setting to be overridden.  To do so,
  389.  *        set this control *after* VL_PACKING.
  390.  *
  391.  * For use with: VL_MGV_DMA_VOUT_BLANK
  392.  */
  393. #define VL_MGV_DMA_VO_BLK_YUVA    0    /* YUVA: Y = A = 16, U = V = 128 */
  394. #define VL_MGV_DMA_VO_BLK_RGBA    1    /* RP175: R = G = B = A = 16 */
  395.  
  396. /*
  397.  *  Field dominance can be set independently for each GIO DMA channel.
  398.  *
  399.  *  NOTE: This is a memory node control, not a device node control.
  400.  *
  401.  * For use with: VL_MGV_DOMINANCE_FIELD
  402.  */
  403. #define VL_MGV_DOMINANCE_F1    0    /* F1 dominance - default*/
  404. #define VL_MGV_DOMINANCE_F2    1    /* F2 dominance */
  405.  
  406. /*
  407.  *  DMA Restart Policy
  408.  *
  409.  *  DMA can be automatically restarted after reception of one of the
  410.  *  error interrupt conditions, or a missed vertical interrupt condition.
  411.  *  These are a result of:
  412.  *
  413.  *    1  The GIO bus bandwidth was insufficient to keep up with video,
  414.  *     resulting in a DMA FIFO under/over flow.
  415.  *
  416.  *    2  The video clock (timing/pixels) was interrupted.
  417.  *
  418.  *    3     The video timing is not clean, resulting in short/long lines,
  419.  *     and/or short/long fields.  These errors are with respect to
  420.  *     the programmed size and offset.
  421.  *
  422.  *  By default, DMA will be terminated and the transfer will fail due
  423.  *  such an error.  If the error restart mode is enabled, then an
  424.  *  error is reported, but the transfer will continue.
  425.  *
  426.  * For use with: VL_MGV_DMA_ERROR_RESTART
  427.  */
  428. #define VL_MGV_DMA_RESTART_OFF    0    /* Transfer fails - default*/
  429. #define VL_MGV_DMA_RESTART_ON    1    /* Report error, continue transfer */
  430.  
  431. /*
  432.  *  DMA Starvataion Policy
  433.  *
  434.  *  When transferring from memory to video using a GIO DMA channel, if
  435.  *  data is not provided quickly enough by the application (vlPutValid()),
  436.  *  then one of the following three actions can be taken until more data
  437.  *  becomes available:
  438.  *
  439.  *    VL_MGV_DMA_VO_STARV_BLK:
  440.  *
  441.  *          Go to black.  Black is output until the next transfer unit
  442.  *     becomes available.  Outputting black does not involve DMA.
  443.  *
  444.  *    VL_MGV_DMA_VO_STARV_RPT:
  445.  *
  446.  *          Repeat the last unit transferred (field or frame).  This
  447.  *     will occur until the next transfer unit becomes available.
  448.  *     In order to repeat, the unit is DMAed continuously.
  449.  *
  450.  *    VL_MGV_DMA_VO_STARV_FLD:
  451.  *
  452.  *          For frames, repeat only the last field until the next transfer
  453.  *     unit becomes available.  Once starvation is detected, the
  454.  *     non-dominant field is output as both the F1 and F2 fields.  This
  455.  *     results in halving the vertical resolution, but eliminates
  456.  *     inter-field motion blur.  In order to repeat, the field is DMAed
  457.  *     continuously.
  458.  *
  459.  *     If the capture type is not either of interleaved or non-interleaved
  460.  *     frames (it is a field in other words), then this control value is
  461.  *     identical in behavior to VL_MGV_DMA_VO_STARV_RPT.
  462.  *
  463.  *     NOTE: The buffer entry of the repeated unit does not again
  464.  *           become available to the application (vlGetnNextFree())
  465.  *           until another transfer unit is ready for DMA.  Therefore,
  466.  *           in order to use this mode, a buffer of at least two
  467.  *           entries must be created.  A minimum if four is required
  468.  *           for non-interleaved frames.
  469.  *
  470.  *    NOTE: This control is only available on VGI1 memory source nodes.
  471.  *
  472.  * For use with: VL_MGV_DMA_VOUT_STARVATION
  473.  */
  474. #define VL_MGV_DMA_VO_STARV_BLK    0    /* Go to black */
  475. #define VL_MGV_DMA_VO_STARV_RPT    1    /* Repeat last field/frame - default */
  476. #define VL_MGV_DMA_VO_STARV_FLD    2    /* Repeat last field of frame only */
  477.  
  478. /* 
  479.  * For use with: VL_MGV_TEXTURE_MIPMAP_MODE
  480.  */
  481. #define    VL_MGV_TEXTURE_MIPMAP_OFF    0    /* mipmap is off - default */
  482. #define    VL_MGV_TEXTURE_MIPMAP_ON     1    /* mipmap is on */    
  483.  
  484. /*
  485.  * For use with: VL_MGV_TEXTURE_ROUND_MODE
  486.  */
  487. #define    VL_MGV_TEXTURE_ROUND_8BIT    0    /* 8 bit - default */
  488. #define    VL_MGV_TEXTURE_ROUND_RNG    1    /* random num gen */
  489. #define    VL_MGV_TEXTURE_ROUND_RNGFRM    3    /* random num gen frame reset */
  490.  
  491. /*
  492.  * For use with: VL_MGV_TEXTURE_INPUT_LINK
  493.  */
  494. #define    VL_MGV_TEXTURE_INPUT_LINK_A    0    /* input link is A - default */
  495. #define    VL_MGV_TEXTURE_INPUT_LINK_B    1    /* input link is B */
  496.  
  497. /*
  498.  * For use with: VL_MGV_TEXTURE_AUTOSWAP
  499.  */
  500. #define    VL_MGV_TEXTURE_AUTOSWAP_OFF    0    /* autoswap is off - default */
  501. #define    VL_MGV_TEXTURE_AUTOSWAP_ON    1    /* autoswap is on */
  502.  
  503. /*
  504.  * For use for dataType in VLExtendedValue.
  505.  * MGV_CSC_COEF is coef type of VLExtendedValue. MGV_CSC_LUT_IN_ALPHA is
  506.  * for input and alpha lut types of VLExtendedValue. MGV_CSC_LUT_OUT is
  507.  * for output lut type of VLExtendedValue.
  508.  */
  509. enum VL_MGV_CSC_DataType {MGV_CSC_COEF, MGV_CSC_LUT_INPUT_AND_ALPHA, MGV_CSC_LUT_OUTPUT};
  510.  
  511. /*
  512.  * For use with: VL_MGV_CSC_LUT_IN_{YG, UB, VR} and VL_MGV_CSC_LUT_ALPHA
  513.  *
  514.  * The following struct VL_MGVInAlphaLutValue is used as dataPointer
  515.  * in VLExtendedValue.
  516.  *
  517.  * To set or get a lut, lut contains lut values. pageNumber is the 
  518.  * page number this lut will be loaded to. This number can be from 
  519.  * 0 (first page) to 3 (last page). 
  520.  */
  521.  
  522. typedef struct {
  523.     int lut[1024];
  524.     int   pageNumber;        /* page number in a lut */
  525. } VL_MGVInAlphaLutValue;
  526.  
  527. /*
  528.  * For use with: VL_MGV_CSC_LUT_OUT_{YG, UB, VR}
  529.  *
  530.  * The following struct VL_MGVOutLutValue is used as dataPointer
  531.  * in VLExtendedValue.
  532.  *
  533.  * To set or get a lut, lut contains lut values.
  534.  */ 
  535.  
  536. typedef struct {
  537.     int lut[4096];
  538. } VL_MGVOutLutValue;
  539.  
  540. #endif /* _MGV_DEV_INCLUDE */
  541.  
  542. /* EOF dev_mgv.h */
  543.